/**************************************************
 ** Purpose: This class will hold the information
 ** regarding a level and will provide the status
 ** and room knowledge to the dungeon itself
 **************************************************/
#ifndef LEVEL_H
#define LEVEL_H

#include "Room.h"

//Testing purpose constants
#define LEVEL_WIDTH		3
#define LEVEL_HEIGHT	3
#define MAXIMUM_ROOMS	5

class Level
{
	public:
		//Constructor which takes in the current level identifier for the map
		Level(int levelId = 0);

		//Destructor for destroying the level information
		~Level();

		//Builds the room in each level
		bool buildLevel();

		//Checks to see if a room has a player start item
		//if it does it will set the room to the current starting
		//location for the player
		void startLevel();

		//Clears the entire level
		void resetLevel();

		//Shifts to the next room in the index
		void goToRoom(int roomId);

		//Information as to the pointer of the current room
		Room* getCurrentRoom() { return m_pCurrentRoom; }

	private:
		//Controls the information for the levels
		//identification number
		int		m_levelId;

		//Holds the instance for the random room type
		int		m_roomType;

		//Holds the information about the amount of rooms
		int		m_amountOfRooms;

		//Holds the current room information
		Room*	m_pCurrentRoom;

		//Rooms for the level
		Room	m_rooms[LEVEL_WIDTH][LEVEL_HEIGHT];
};

#endif